DQLab.id Fashion adalah sebuah toko fashion yang menjual berbagai produk seperti jeans, kemeja, kosmetik, dan lain-lain. Walaupun cukup berkembang, namun dengan semakin banyaknya kompetitor dan banyak produk yang stoknya masih banyak tentunya membuat kuatir Pak Agus, manajer DQLab.id Fashion.
Salah satu solusi adalah membuat paket yang inovatif. Dimana produk yang sebelumnya tidak terlalu laku tapi punya pangsa pasar malah bisa dipaketkan dan laku.
Sebagai seorang data scientist, akan ditugaskan membantu Pak Agus untuk mengidentifikasi paket produk yang menarik untuk dipaketkan sehingga akhirnya bisa meningkatkan keuntungan dan loyalitas para pelanggan DQLab.id Fashion. Dan untuk mewujudkan ini, kita akan menggunakan R dan algoritma aproriari dari paket arules di sepanjang project ini.
Untuk memulai project ini, Pak Agus meminta Pak Charlie, data engineer dari DQLab.id Fashion memberikan data transaksi 3 bulan kepada Anda dalam bentuk format TSV (Tab Separated Value) dengan nama transaksi_dqlab_retail.tsv dengan jumlah baris 33,669 baris data (3,450 kode transaksi).
Data transaksi ini telah dirapikan untuk Anda dengan hanya mengandung dua variable, yaitu:
Variable lain seperti harga, tanggal, jumlah pembelian, dan lain-lain – tidak dimasukkan sesuai permintaan pihak DQLab.id Academy kepada DQLab.id Fashion dengan alasan dua variable tersebut sudah cukup.
Project ini terdiri dari 3 soal, yaitu:
Tiap soal memerlukan input dataset yang telah dijelaskan pada subbab sebelumnya. Setelah diproses maka Anda perlu menuliskan dalam nama file sesuai petunjuk.
Tahap pertama sebenarnya yang diinginkan oleh Pak Agus adalah melihat apakah Anda mampu memberikan info top 10 dari dataset transaksi yang diberikan.
library(arules)
transaksi<- read.transactions(file="transaksi_dqlab_retail.tsv", format="single", sep="\t", cols=c(1,2), skip=1)
transaksi
data_item <- itemFrequency(transaksi, type='absolute')
data_item <- sort(data_item, decreasing = TRUE)
data_item <- data_item[1:10]
data_item <- data.frame("Nama Produk"=names(data_item), "Jumlah"=data_item, row.names=NULL)
print(data_item)
Tahap berikutnya adalah Anda harus bisa memberikan informasi bottom 10 dari dataset transaksi yang diberikan.
Tahap pertama sebenarnya yang diinginkan oleh Pak Agus adalah melihat apakah Anda mampu memberikan info top 10 dari dataset transaksi yang diberikan.
data_bottom <- itemFrequency(transaksi, type="absolute")
data_bottom <- sort(data_bottom, decreasing=FALSE)
data_bottom <- data_bottom[1:10]
data_bottom <- data.frame("Nama Produk"=names(data_bottom), "Jumlah"=data_bottom, row.names=NULL)
print(data_bottom)
Setelah yakin Anda dapat melakukannya Pak Agus ingin Anda mengirimkan file yang berisi daftar 10 paket kombinasi produk yang paling "menarik".
Anda pertamanya bingung, apa sih definisi menarik versi Pak Agus ini. Setelah wawancara intensif, ternyata pengertiannya adalah sebagai berikut:
Memiliki asosiasi atau hubungan erat. Kombinasi produk minimal 2 item, dan maksimum 3 item. Kombinasi produk itu muncul setidaknya 10 dari dari seluruh transaksi. Memiliki tingkat confidence minimal 50 persen.
mba <- apriori(transaksi, parameter = list(supp=10/nrow(transaksi), minlen=2, maxlen=3, confidence=0.5))
data <- sort(mba, by='lift', decreasing = TRUE)
data <- data[1:10]
inspect(data)
write(data, file="kombinasi_retail.txt")
Slow-moving item adalah produk yang pergerakan penjualannya lambat atau kurang cepat. Ini akan bermasalah apabila item produk tersebut masih menumpuk.
Kadang kala item ini belum tentu tidak laku, hanya saja mungkin harganya tidak bagus dan jarang dibutuhkan jika dijual satuan. Nah, jika tidak dijual satuan kita perlu cari asosiasi kuat dari item produk ini dengan produk lain sehingga jika dipaketkan akan menjadi lebih menarik.
Pak Agus juga meyakini hal ini, dan ingin agar Anda membantu mengidentifikasi dua item produk yang menurut dia stoknya masih banyak dan perlu dicari pasangan item untuk pemaketannya.
Dua item produk tersebut adalah "Tas Makeup" dan "Baju Renang Pria Anak-anak". Pak Agus ingin meminta kombinasi yang bisa dipaketkan dengan kedua produk tersebut.
Masing-masing produk tersebut dikeluarkan 3 rules yang asosiasinya paling kuat, sehingga total ada 6 rules. Persyaratan-persyaratan asosiasi kuat ini masih sama dengan yang telah disebutkan Pak Agus sebelumnya, kecuali tingkat confidence dicoba pada tingkat minimal 0.1.
transaksi_slow <- apriori(transaksi, parameter = list(supp=10/nrow(transaksi), minlen=2, maxlen=3, confidence=0.1))
slow_move1 <- subset(transaksi_slow, rhs %in% 'Tas Makeup' & lift>1)
slow_move1 <- sort(slow_move1, by='lift', decreasing = TRUE)[1:3]
slow_move2 <- subset(transaksi_slow, rhs %in% 'Baju Renang Pria Anak-anak' & lift>1)
slow_move2 <- sort(slow_move2, by='lift', decreasing = TRUE)[1:3]
slow_move <- c(slow_move1,slow_move2)
inspect(slow_move)
write(slow_move,file= "kombinasi_retail_slow_moving.txt")